
const permissionList = ['page2']


export const hasPerm = {
  // 当指令绑定到元素上时触发
  created(el, binding, vnode, prevVnode) {
  },
  // 元素挂载到 DOM 之前触发
  beforeMount(el, binding, vnode, prevVnode) {
  },
  // 元素挂载到 DOM 之后触发
  mounted(el, binding, vnode, prevVnode) {
    const { value } = binding;
    console.log(value)

    if (!value) throw new Error("请传入权限标识");
    if (typeof value == "string") {
      //没有权限就移除当前元素
      if (!permissionList.includes(value)) {
        el.parentNode?.removeChild(el);
      }
      return;
    }
    if (Array.isArray(value)) {
      //用户权限是否拥有数组中的任意一个权限
      const hasPerm = value.some((item) => permissionList.includes(item));
      if (!hasPerm) {
        el.parentNode?.removeChild(el);
      }
      return;
    }

    throw new Error("权限标识格式不正确");
  },
  // 组件更新前触发
  beforeUpdate(el, binding, vnode, prevVnode) {
    // 通常用于在更新前做一些准备工作
  },
  // 组件更新后触发
  updated(el, binding, vnode, prevVnode) {
    // 可以在这里处理更新后的逻辑
  },
  // 元素卸载前触发
  beforeUnmount(el, binding, vnode, prevVnode) {
    // 可以在这里做一些清理工作，比如移除事件监听器
  },
  // 元素卸载后触发
  unmounted(el, binding, vnode, prevVnode) {
    // 完成最终的清理操作
  }

}

